home *** CD-ROM | disk | FTP | other *** search
/ Gigarom 4 / Mac Giga-ROM 4.0 - 1993.toast / FILES / DEV / I-Z / ViewIt™ Shareware.sea / ViewIt™ 2.04 Shareware / Projects / Fortran Demos / vDemoAF.f < prev    next >
Text File  |  1992-08-04  |  5KB  |  152 lines

  1. C NOTE: Read the "MPW Fortrans" section of "About Compilers"
  2. C before compiling AF programs that use FaceWare modules.
  3.  
  4. C ViewIt 2.03 Demonstration Program
  5. C ©FaceWare 1991-92.  All Rights Reserved.
  6.  
  7.     GLOBAL DEFINE
  8.     include "Types.inc"
  9.     include "QuickDraw.inc"
  10.     include "Controls.inc"
  11.     include "Events.inc"
  12.     include "OSUtils.inc"
  13.     include "OSEvents.inc"
  14.     include "SegLoad.inc"
  15.     include "Files.inc"
  16.     include "Resources.inc"
  17.     include "FaceStorAF.inc"
  18.     structure /DataRec/
  19.       integer*2 myInteger
  20.       real*4 myReal
  21.       character*100 myString
  22.       integer*4 myFlags
  23.     end structure
  24.     END
  25.  
  26.     include "FaceProcAF.inc"
  27.  
  28.       PROGRAM vDemoAF
  29.     implicit none
  30.       record /FaceRec/ fRec
  31.       common/FaceStuff/fRec
  32.     record/DataRec/myRec
  33.     common/MyStuff/myRec
  34.     real*4 theReal
  35.     logical*4 helpShown
  36.     integer*4 myPtr
  37.     integer*4 OverProc
  38.     pascal external OverProc
  39.  
  40.     myRec.myInteger = 0
  41.     myRec.myReal = 6.2
  42.     myRec.myString = 'Hello'
  43.     myRec.myFlags = 10
  44.     theReal = 6.0
  45.  
  46. C Initialize FaceIt
  47.       fRec.uName = 'vDemo.Rsrc'
  48.       call FaceIt(0,DoInit,0,0,0,0)
  49.  
  50. C Show ViewIt On-Line Help (if available)
  51.     call FaceIt(0,HlpWnd,0,0,10,10)
  52.  
  53. C Open Modeless Window using FWND 1000
  54.     call FaceIt(0,NewWnd,1000,1,0,0)
  55.  
  56.       do while (.true.)
  57.         call FaceIt(0,DoLoop,0,0,0,0)
  58. C Standard "About" Menu Item Selection
  59.       if ((fRec.uMenuID == 101).and.(fRec.uMenuItem == 1)) then
  60.         fRec.uString = 'Demonstration of the use of ViewIt'
  61.      +//char(13)//'windows in a FaceIt-based program.'
  62.         call FaceIt(0,ShoStr,3,12,(1 + (409*65536)),0)
  63. C Hit in Modeless Window's "Open Modal" Button
  64.       else if ((fRec.uMenuID == 1000).and.(fRec.wcHit == 2)) then
  65.         call FaceIt(0,NewWnd,1001,0,0,0)  !Open Modal Window
  66.         do while (.true.)
  67.           call FaceIt(0,MdlWnd,1001,0,0,0)  !Process Modal Events
  68.         if (fRec.wcHit == -1) then        !Hit in Close Box
  69.           exit
  70.         else if (fRec.wcHit == 1) then    !Hit in "Open Nested"
  71.           myPtr = %loc(myRec)
  72.           call FaceIt(0,NewWnd,1002,0,0,myPtr)!Open Nested Modal
  73.           call FaceIt(0,GetCtl,1002,0,2,3)      !Setup Override Examples
  74.           call FaceIt(0,OvrCtl,fRec.cControl,OverProc,0,0)
  75.           call FaceIt(0,GetCtl,1002,0,2,6)
  76.           call FaceIt(0,OvrCtl,fRec.cControl,OverProc,0,0)
  77.           call FaceIt(0,GetCtl,1002,0,2,7)
  78.           call FaceIt(0,OvrCtl,fRec.cControl,OverProc,0,0)
  79.           call FaceIt(0,SetVal,1002,0,0,0)      !Set Linked Values
  80.           helpShown = .false.
  81.           do while (.true.)
  82.             call FaceIt(0,MdlWnd,1002,0,0,0)  !Process Modal Events
  83.             if (fRec.wvHit == 1) then          !Hit in View #1
  84.               if (fRec.wcHit == 1) then      !Hit in "OK" Button
  85.               exit
  86.             else if (fRec.wcHit == 2) then  !Hit in "Show/Hide"
  87.               if (helpShown) then
  88.                 call FaceIt(0,ShoCtl,0,0,-3,2)  !Hide v3, Show v2
  89.                 helpShown = .false.
  90.               else
  91.                 call FaceIt(0,ShoCtl,0,0,-2,3)  !Hide v2, Show v3
  92.                 helpShown = .true.
  93.               end if
  94.             end if
  95.             end if
  96.           end do
  97.           call FaceIt(0,GetVal,1002,0,0,0)      !Get Linked Values
  98.           call FaceIt(0,EndWnd,1002,0,0,0)      !Close Nested Modal
  99.         end if
  100.         end do
  101.         call FaceIt(0,EndWnd,1001,0,0,0)  !Close Modal Window
  102. C Hit in Modeless Window's "Why ViewIt?" Button
  103.       else if ((fRec.uMenuID == 1000).and.(fRec.wcHit == 3)) then
  104.         call FaceIt(0,NewWnd,1003,0,0,%loc(theReal))
  105.         call FaceIt(0,SetVal,1003,0,0,0)
  106.         do while (.true.)
  107.           call FaceIt(0,MdlWnd,1003,0,0,0)
  108.         if (fRec.wcHit == 1) exit
  109.         end do
  110.         call FaceIt(0,GetVal,1003,0,0,0)
  111.         call FaceIt(0,EndWnd,1003,0,0,0)
  112.       end if
  113.       end do
  114.       end
  115.  
  116. C NOTE: Use of a procedure like "OverProc" that is called by ViewIt
  117. C requires that it be compiled with the "-k" option set.  See your
  118. C MacFortran II manual for more info about the "-k" compiler option.
  119.     PASCAL SUBROUTINE OverProc(thePtr)
  120.     value thePtr
  121.     implicit none
  122.     integer*4 JumpIt
  123.     inline (JumpIt = /z'2257',z'2051',z'4e90'/)
  124.       record /FaceRec/ fRec
  125.       common/FaceStuff/fRec
  126.     record/DataRec/myRec
  127.     common/MyStuff/myRec
  128.     integer*4 thePtr,theArrow
  129.     real*4 delta
  130.     if (fRec.cResID == 1000) then     !Arrow Controls
  131.       if (fRec.uCommand == 8) then    !mouse down message?
  132.         delta = 0.001 * (fRec.cMin - 2)
  133.         theArrow = fRec.cControl
  134.         call HiliteControl(%val4(theArrow),%val2(1))
  135.         do while (StillDown())
  136.           myRec.myReal = myRec.myReal + delta
  137.         call FaceIt(0,SetVal,0,0,2,2)
  138.         call Delay(%val4(5),fRec.uI4)
  139.         end do
  140.         call HiliteControl(%val4(theArrow),%val2(0))
  141.         return
  142.       end if
  143.     else                        !Editable Text Item
  144.       if (fRec.uCommand == 264) then    !a key down message?
  145.         if (fRec.uParam(1) == 32) then    !SPACE key pressed?
  146.           fRec.uParam(1) = 95        !convert to UNDERLINE
  147.         end if
  148.       end if
  149.     end if
  150.     call JumpIt(%val4(thePtr))        !pass message to driver
  151.     end
  152.